package com.adf.admin.entity;

import com.baomidou.mybatisplus.core.metadata.IPage;

import lombok.Data;
import java.util.List;

/**
 * 通用分页结果类：统一所有分页接口的返回格式
 * @param <T> 分页数据的类型（如 RoleQueryVO、UserVO 等）
 */
@Data
public class PageResult<T> {

    private List<T> records; // 分页数据（如当前页的角色列表）

    private long total; // 符合条件的总条数

    private long size; // 每页条数（如 10 条/页）

    private long current; // 当前页码（如第 1 页）

    private long pages; // 总页数（自动计算：total / size，向上取整）

    /**
     * 静态方法：快速将 MyBatis-Plus 的 IPage 转换为 PageResult
     * @param iPage MyBatis-Plus 分页查询返回的 IPage 对象
     * @param <T> 数据类型
     * @return 通用分页结果 PageResult
     */
    public static <T> PageResult<T> from(IPage<T> iPage) {
        PageResult<T> result = new PageResult<>();
        result.setRecords(iPage.getRecords()); // 数据列表
        result.setTotal(iPage.getTotal());     // 总记录数
        result.setSize(iPage.getSize());       // 每页条数
        result.setCurrent(iPage.getCurrent()); // 当前页码
        result.setPages(iPage.getPages());     // 总页数（IPage 已自动计算）
        return result;
    }
}